1. Technical Field
The invention is related to a microphone array having one or more microphones in a predetermined arrangement, and in particular, to a self-descriptive microphone array that automatically self-calibrates and provides a current configuration and state to a computer to which it is connected, so that the computer can automatically configure audio processing software to be used for processing audio signals captured via the microphone array.
2. Related Art
Conventional microphone array type devices are well known to those skilled in the art. In general, microphone arrays typically include an arrangement of microphones in some predetermined layout. These microphones are generally used to capture sounds from various directions and originating from different points in space. Once captured, onboard sound processing software and hardware then provides sound processing capabilities, such as, for example, sound source localization, beam forming, acoustic echo cancellation, noise suppression, etc.
For example, one common use for such arrays involving audio conferencing systems is to determine the direction of a dominant speaker in a room having both active speech and other noise, and then to process the input from the various microphones in the array accordingly. In particular, given the input from each of the microphones in the array, conventional beam forming and sound source localization computations are used to localize the position and direction of the person currently speaking. With this information, it is then possible to filter out all sounds not coming from the direction of the speaker, thereby improving the overall quality of the captured sound with respect to the person speaking.
Further, many microphone arrays do adaptive beamforming processing within the array itself. However, acoustic echo cancellation (AEC) processing needs to be tightly coupled to any associated adaptive beamforming processing in order to work properly. Consequently, when external software applications attempt to provide AEC processing in a remote computing device, such as a PC-type computer, while performing beamforming computations within the microphone array itself, the AEC typically fails, or provides sub-optimal results. Therefore, such arrays must typically include additional onboard processing capabilities, thereby increasing array expense, in order to perform adaptive beamforming processing in combination with AEC processing.
As noted above, such microphone arrays typically include onboard processing hardware and software within the microphone array itself for performing analog and/or digital sound processing. Unfortunately, such onboard hardware tends to be significantly more expensive than the actual microphones in the array. Further, because the hardware and software is typically included within the array, updating the hardware and software is often difficult or impossible for an end-user of the equipment.
In addition, every microphone, and thus every microphone within a microphone array, tends to have slightly unique properties with respect to parameters, such as, for example, sensitivity, frequency response, transient response, and directivity vs. frequency. This is typically true even of microphones of the same model or type. Therefore, software for interfacing with microphone arrays is typically specially designed to operate with particular microphone arrays, or includes DLL's or drivers specifically tailored to particular microphone arrays that rely on external computers for audio processing.
For example, with microphone arrays that include onboard processing capabilities, the manufacturer typically knows the exact parameters, i.e., frequency response curves, etc. of the microphones in the array, and simply designs or modifies the software to suit the particular configuration of each specific array. Similarly, with passive microphone arrays that rely on an external computer for sound processing capabilities, the manufacturer of the microphone array typically provides software DLL's or drivers which reside on the computer to which the microphone array is coupled, and which are designed or modified to suit the particular known configuration of the array.
Unfortunately, where the parameters of the array are either not known by the user, or where a user desires to use a particular microphone array with software that was not specifically designed to operate with the particular microphone array, generic software drivers or DLL's operating on an external computer for processing audio inputs from the microphone array tend to produce sub-optimal audio processing results.
Further, the operational parameters of individual microphones in a microphone array tend to change, if even only slightly, over time. Therefore, software tailored to a particular microphone array configuration can produce sub-optimal audio processing results as the parameters of the microphone array change over time.
Therefore, what is needed is a microphone array that avoids the expense of onboard audio processing by acting as an inexpensive peripheral device and using the computational power of an external computer to which it is connected for processing audio signals. Further, rather than requiring software to be specifically pre-tailored to the particular operational parameters of the microphone array, the microphone array should instead be operable with software that automatically configures itself to the operational parameters of the microphone array. Consequently, the microphone array should include the capability to automatically report those operational parameters to the external computer to allow for automatic configuration and optimization of audio processing software residing on that computer.